const eventStore = {}
// 事件总线
export default {
	$on(eventName, handler) {
		if (!eventStore[eventName]) {
			eventStore[eventName] = new Set()
		}
		eventStore[eventName].add(handler)
	},
	$off(eventName, handler) {
		if (!eventStore[eventName]) {
			return // 不存在则直接返回
		}
		eventStore[eventName].delete(handler)
	},
	$emit(eventName, ...args) {
		if (!eventStore[eventName]) {
			return
		}
		eventStore[eventName].forEach((handler) => {
			handler(...args)
		})
	},
	// 移除某个事件名称的所有事件-尽量不使用
	$offByEventName(eventName) {
		if (!eventStore[eventName]) {
			return
		}
		eventStore[eventName].clear()
	},
	// 查看当前事件总线储存的回调函数
	$getEvents() {
		return eventStore
	},
}
